package com.mall.pojo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 地址信息
 *
 * @author xiao-chen
 * @since 2023-05-02
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_address")
public class Address implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "id")
    private Long id;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 收货地址
     */
    @NotNull
    @Size(max = 255)
    @Pattern(regexp = "^([\\u4E00-\\u9FA5A-Za-z0-9_]+((省|市|自治区|特别行政区)?[\\u4E00-\\u9FA5A-Za-z0-9_]+)*(区|县)[\\u4E00-\\u9FA5A-Za-z0-9_]*([\\u4E00-\\u9FA5A-Za-z0-9_]+(街道|路|巷|弄|号)*)){1,2}$", message = "收货地址格式不正确")
    private String address;

    /**
     * 是否是默认地址 0不是1是
     */
    private Integer isDefault;

    /**
     * 创建人id
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createDate;

    /**
     * 修改人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateDate;

    /**
     * 收货人
     */
    @Pattern(regexp = "^(?:[\u4e00-\u9fa5·]{2,16})$", message = "收货人姓名格式不正确")
    @NotNull
    private String receiveUser;
    /**
     * 收货人手机号
     */
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式不正确")
    @NotNull
    private String phone;

}
